18
תגובות
אני רוצה להשתמש במשתנים ב-RegExp שב-JS במקום סתם טקסט. איך עושים את זה?

18 תשובות

avatar ענה intval ב 02 לפברואר 2012 #

אפשר ליצור ביטוי רגולרי באמצעות המחלקה RegExp בצורה הבאה:

var re = new RegExp("regex","g");
"mystring".replace(re, "newstring");

avatar ענה OrelBeY ב 03 לפברואר 2012 #

ואם אני רוצה לעשות שרק אם זה יופיע בסוף (בעזרת $)?
ואם כבר - איך אני עושה רק בסוף מילה ולא בסוף כל הטקסט?

avatar ענה intval ב 03 לפברואר 2012 #

לפי מה כשאתה קורא את הארי פוטר המוח שלך יודע שזה סוף מילה?

var re = new RegExp("$blabla[^a-z0-9א-ת]", 'gi');

avatar ענה OrelBeY ב 03 לפברואר 2012 #

צריך לשלב גם סימן קריאה וכו'.
והשאלה שלי מלכתחילה הייתה איך עושים את זה עם משתנים.
כלומר, אני רוצה לבדוק אם

array[0][9]
נמצא בסוף כל מילה, ואם כן, לשנות אותו באותה המילה למשהו אחר שנמצא במערך אחר.
איך אני עושה את זה?

avatar ענה intval ב 03 לפברואר 2012 #

תנסה לבד להכניס לזה משתנה

var re = new RegExp("regex","g");

avatar ענה OrelBeY ב 03 לפברואר 2012 #

לא הבנתי.
במקרה רגיל אני פשוט עושה:

re = new RegExp(array[0][9],"g");

אבל ניסיתי ב:
re = new RegExp("$blabla[^a-z0-9א-ת]", 'gi');

בכל מיני דרכים ולא הצלחתי

avatar ענה iiddaannyy ב 03 לפברואר 2012 #

re = new RexExp(array[0][9]+"\b", "g");

avatar ענה OrelBeY ב 03 לפברואר 2012 #

המטרה שלי שזה יחליף את array[0][9] במשהו אחר בכל אות אחרונה (שזהה אליו) בכל מילה.

re = new RexExp(array[0][9]+"\b", "g");

איך זה עוזר לי?
אני לא מצליח להבין...

avatar ענה iiddaannyy ב 03 לפברואר 2012 #

זה מוצא כל array[0][9] שיש בסוף מילה.

avatar ענה OrelBeY ב 03 לפברואר 2012 #

לא עובד לי...

re=new RegExp(myArray[0][9]+"\b", "g");
text=text.replace(re, myArray[1][9]);

avatar ענה OrelBeY ב 04 לפברואר 2012 #

מישהו?

avatar ענה intval ב 04 לפברואר 2012 #

text = 'abcx defy ghix, jklx! mnoy pqrx xxx yyx zzz?? abcx58 blatx';

find = 'x';
replace = '2';

 re = new RegExp(find + "([^-a-zA-z0-9א-ת]|$)", "g");
text = text.replace(re, replace + '$1');

document.write(text);

avatar ענה OrelBeY ב 04 לפברואר 2012 #

למה הוא לא משנה גם את ה-x האחרון? :)

avatar ענה intval ב 04 לפברואר 2012 #

ערכתי את הקוד. עכשיו משנה גם את האחרון

avatar ענה OrelBeY ב 04 לפברואר 2012 #

תודה רבה. :)
שאלה אחת אחרונה - אתה מכיר מדריך שמסביר בפירוט ולעומק את כל הדברים הקשורים לנושא הזה? (חוץ מגוגל)

avatar ענה intval ב 05 לפברואר 2012 #

תנסה לכתוב בחיפוש של האתר "ביטויים רגולריים"

avatar ענה OrelBeY ב 05 לפברואר 2012 #

קראתי אותו פעם. :)
ובכל זאת לא הבנתי מה עושה פה $1:

text = text.replace(re, replace + '$1');

avatar ענה intval ב 05 לפברואר 2012 #

כל מה שנמצא בתוך סוגריים עגולות בביטוי הרגולרי נשמר בזיכרון לתוך משתנה. $1 זה המשתנה.
במקרה של הביטוי שלך זה "התו שאחרי ה X שהוא לא A_Z 0-9
שזה יכול להיות פסיק, נקודה, מעבר שורה, סוף טקסט, סימן קריאה כלשהו, ריבוע, מלבן, מספר וכו' (כל מה שלא a-z 0-9 א-ת